package ops.weixin.cp.config;

import ops.weixin.common.bean.WxAccessToken;
import ops.weixin.common.util.http.apache.ApacheHttpClientBuilder;

/**
 * 微信客户端配置存储： 基于内存，根据实际情况确定是否将这些配置持久化.
 * 
 * @author SuM
 * @date: 2019年12月24日下午5:11:10
 */
public interface WxCpConfigStorage {

	/**
	 * 设置企业微信服务器 baseUrl. 默认值是 https://qyapi.weixin.qq.com , 如果使用默认值，则不需要调用
	 * setBaseApiUrl
	 *
	 * @param baseUrl 企业微信服务器 Url
	 */
	void setBaseApiUrl(String baseUrl);

	/**
	 * 读取企业微信 API Url. 支持私有化企业微信服务器.
	 */
	String getApiUrl(String path);

	String getAccessToken();

	/**
	 * @return AccessToken是否过期
	 */
	boolean isAccessTokenExpired();

	/**
	 * 强制将access token过期掉.
	 */
	void expireAccessToken();

	void updateAccessToken(WxAccessToken accessToken);

	void updateAccessToken(String accessToken, int expiresIn);

	String getCorpId();

	String getCorpSecret();

	Integer getAgentId();

	String getToken();

	String getAesKey();

	long getExpiresTime();

	String getOauth2redirectUri();

	String getHttpProxyHost();

	int getHttpProxyPort();

	String getHttpProxyUsername();

	String getHttpProxyPassword();

	/**
	 * http client builder.
	 *
	 * @return ApacheHttpClientBuilder
	 */
	ApacheHttpClientBuilder getApacheHttpClientBuilder();
}
